<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/7/3 0003
 * Time: 上午 8:09
 */


class MQ
{
    static $redis;

    static function init_redis()
    {
        $container = CI_Controller::get_instance();
        self::$redis = new \Redis();
        self::$redis->connect( $container->config->item('redis_host'), $container->config->item('redis_port'));
        $password = $container->config->item('redis_password');
        self::$redis->auth($password);
        return self::$redis;
    }

    static function me()
    {
        return !empty(self::$redis) ? self::$redis : self::init_redis();
    }

    ###########
    ###哈希表   hash
    ###########
    static function hSet($key, $value)
    {
        $redis = self::me();
        $value = $redis->hSet("MP_HASH",$key, $value);
        return $value;
    }
    static function hGet($key)
    {
        $redis = self::me();
        $value = $redis->hGet("MP_HASH",$key);
        return $value;
    }
    static function hDel($key)
    {
        $redis = self::me();
        $value = $redis->hDel("MP_HASH",$key);
        return $value;
    }
    ###########
    ###集合   set
    ###########
    /**
     * 集合  加入
     * @param $key
     * @param $value
     * @return int
     */
    static function sAdd($key, $value)
    {
        $redis = self::me();
        $value = $redis->sAdd($key, $value);
        return $value;
    }
    /**
     * 集合  删除
     * @param $key
     * @param $value
     * @return int
     */
    static function sRem($key,$value)
    {
        $redis = self::me();
        $value = $redis->sRem($key,$value);
        return $value;
    }

    /**
     * 集合  列出全部
     * @param $key
     * @return bool
     */
    static function sMembers($key)
    {
        $redis = self::me();
        $value = $redis->sMembers($key);
        return $value;
    }

    /**
     * 判断元素是否是集合中的
     * @param $key
     * @return array
     */
    static function sIsMember($key,$val)
    {
        $redis = self::me();
        $value = $redis->sIsMember($key,$val);
        return $value;
    }

    ###########
    ###列表   list
    ###########
    /**
     * 列表 list
     * @param $key
     * @param $value
     * @return bool|int
     */
    static function rpush($key, $value)
    {
        $redis = self::me();
        return $redis->rpush($key, $value);
    }

    static function lpop($key)
    {
        $redis = self::me();
        $value = $redis->lpop($key);
        return $value;
    }
    static function lRange($key)
    {
        $redis = self::me();
        $value = $redis->lRange($key,0,-1);
        return $value;
    }
}